<!DOCTYPE html>
<html lang="zh">

	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<meta http-equiv="X-UA-Compatible" content="ie=edge" />
		<title>Web Uploader</title>
		<script src="../../js/lib/jquery-v1.9.1/jquery.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/lib/webuploader-v0.1.5/webuploader.js" type="text/javascript" charset="utf-8"></script>

		<link rel="stylesheet" type="text/css" href="../../js/lib/webuploader-v0.1.5/webuploader.css" />
		<link rel="stylesheet" type="text/css" href="index.css" />
	</head>

	<body>
		<h1>Web Uploader 图片上传示例</h1>
		<!--dom结构部分-->
		<div id="uploader-demo">
			<div id="filePicker">选择图片</div>
			<button id="ctlBtn" class="btn btn-default">开始上传</button>
			<!--用来存放item-->
			<div id="file-list" class="uploader-list"></div>
		</div>

		<script type="text/javascript">
			$(function() {
				var $ = jQuery,
					$list = $('#file-list'),
					$btn = $('#ctlBtn'),
					// 优化retina, 在retina下这个值是2
					ratio = window.devicePixelRatio || 1,
					state = 'pending',
					// 缩略图大小
					thumbnailWidth = 100 * ratio,
					thumbnailHeight = 100 * ratio,
					uploader;

				var BASE_URL = "../../js/lib/webuploader-v0.1.5/";

				uploader = WebUploader.create({
					// 自动上传。
					auto: false,
					// swf文件路径
					swf: BASE_URL + 'Uploader.swf',
					// 文件接收服务端。
					server: 'http://127.0.0.1:46001/avatars/file-upload.php',
					// 选择文件的按钮。可选。
					// 内部根据当前运行是创建，可能是input元素，也可能是flash.
					pick: '#filePicker',
					// 只允许选择文件，可选。
					accept: {
						title: 'Images',
						extensions: 'gif,jpg,jpeg,bmp,png',
						mimeTypes: 'image/*'
					}
				});

				// 当有文件添加进来的时候
				uploader.on('fileQueued', function(file) {
					var $li = $(
							'<div id="' + file.id + '" class="file-item thumbnail">' +
							'<img/>' +
							'<div class="info">' + file.name + '</div>' +
							'</div>'
						),
						$img = $li.find('img');

					$list.append($li);

					// 创建缩略图
					uploader.makeThumb(file, function(error, src) {
						if(error) {
							$img.replaceWith('<span>不能预览</span>');
							return;
						}

						$img.attr('src', src);
					}, thumbnailWidth, thumbnailHeight);
				});
				// 文件上传过程中创建进度条实时显示。
				uploader.on('uploadProgress', function(file, percentage) {
					var $li = $('#' + file.id),
						$percent = $li.find('.progress .progress-bar');

					// 避免重复创建
					if(!$percent.length) {
						$percent = $('<div class="progress progress-striped active">' +
							'<div class="progress-bar" role="progressbar" style="width: 0%">' +
							'<span></span>' +
							'</div>' +
							'</div>').appendTo($li).find('.progress-bar');
					}

					$percent.css('width', percentage * 100 + '%');
				});

				// 文件上传成功，给item添加成功class, 用样式标记上传成功。
				uploader.on('uploadSuccess', function(file) {
					$('#' + file.id).addClass('upload-state-done');
				});

				// 文件上传失败，现实上传出错。
				uploader.on('uploadError', function(file) {
					var $li = $('#' + file.id),
						$error = $li.find('div.error');

					// 避免重复创建
					if(!$error.length) {
						$error = $('<div class="error"></div>').appendTo($li);
					}

					$error.text('上传失败');
				});

				// 完成上传完了，成功或者失败，先删除进度条。
				uploader.on('uploadComplete', function(file) {
					//					$('#' + file.id).find('.progress').remove();
				});
				uploader.on('all', function(type) {
					console.log(type);
					if(type === 'startUpload') {
						state = 'uploading';
					} else if(type === 'stopUpload') {
						state = 'paused';
					} else if(type === 'uploadFinished') {
						state = 'done';
					}

					if(state === 'uploading') {
						$btn.text('暂停上传');
					} else {
						$btn.text('开始上传');
					}
				});

				$btn.on('click', function() {
					if(state === 'uploading') {
						uploader.stop();
					} else {
						uploader.upload();
					}
				});
			})
		</script>
	</body>

</html>